rm(list = ls(all = TRUE)) #limpiar workspace
setwd("~/Contra_el_Hambre/CHECK_CRITERIOS")

data <- read.table("data.out.txt", header=TRUE, sep=",", na.strings=".")

data$cruzada <- factor(data$cruzada, levels=0:1, labels=c("Fuera", "Cruzada"))
data$Rank.Extrema <- rank(-data$Extrema, ties.method="random")
data$Rank.Perc.Extrema <- rank(-data$Perc.Extrema, ties.method="random")
data$Rank.Ambas <- rank(-data$Ambas, ties.method="random")
data$Rank.Perc.Ambas <- rank(-data$Perc.Ambas, ties.method="random")

library(rpart)
set.seed(12345)
out <- rpart(cruzada ~ 
               Rank.Extrema + 
               Rank.Perc.Extrema + 
               Rank.Ambas +
               Rank.Perc.Ambas +
               as.factor(eleccion),
             method="class",
             data=data)
plotcp(out)
print(out)
summary(out)
post(out, file = "tree_rank.ps", title="")

# 19 Falsos negativos
data <- cbind(data, Nodo=out$where)
subset(data, cruzada=="Cruzada" & Nodo==4, 
       select=c(NOM_ENT, NOM_MUN, eleccion))

# 7 Falsos positivos
subset(data, cruzada=="Fuera" & Nodo==7, 
       select=c(NOM_ENT, NOM_MUN, eleccion))

subset(data, cruzada=="Fuera" & Nodo==6, 
       select=c(NOM_ENT, NOM_MUN, eleccion))

# Gráfica Poblacion - Poblacion extrema
pdf("pob_pobreza.pdf", 5, 5)
plot(log(data$Poblacion)[data$cruzada=="Fuera"],
     log(data$Extrema)[data$cruzada=="Fuera"], 
     col=rgb(0,0,0,20,maxColorValue=255), pch=16,
     xlab= "log(Población)",
     ylab= "log(Pobreza extrema)",     
     xlim=range(log(data$Poblacion), na.rm = TRUE), 
     ylim=range(log(data$Extrema), na.rm = TRUE))
points(log(data$Poblacion)[data$cruzada=="Cruzada"],
       log(data$Extrema)[data$cruzada=="Cruzada"], 
       col=rgb(100,0,0,80,maxColorValue=255), pch=16)
abline(v=log(c(50000, 100000, 250000, 500000)),lty="dashed")
abline(h=log(data$Extrema[data$Rank.Extrema==199]), 
       lty="dashed", lwd=1.5, col="red")
dev.off()

## Son los mismos resultados con "tree"?
library(tree)
out2 <- tree(cruzada ~ 
               Rank.Extrema + 
               Rank.Perc.Extrema + 
               Rank.Ambas +
               Rank.Perc.Ambas +
               as.factor(eleccion),
             data=data)
plot(out2); text(out2)
summary(out2)
out2
misclass.tree(out2, detail=TRUE)
# mismo número (19+7=26) de misclasificación
# pero el output de rpart es más elegante
data <- cbind(data, Nodo.tree=out2$where)
table(data$Nodo.tree, data$cruzada)

